# -*- coding: utf-8 -*

from django.http import HttpResponse
from djtools.utils import rtr
from acaojudicial.models import GrupoAcao, AcaoJudicial
from acaojudicial.forms import GrupoAcaoBuscaForm
from acaojudicial.reports import RelatorioAcaoJudicialGeralPDF, RelatorioAcaoJudicialPDF
from geraldo.generators import PDFGenerator
from djtools import db

def relatorio_geral(request, titulo):
    response = HttpResponse(mimetype='application/pdf')
    response['Content-Disposition'] = 'attachment; filename=relatorio_acao_geral.pdf'
    
    strConsulta = """SELECT acaojudicial_acaojudicial.descricao, acaojudicial_grupoacao.descricao, rh_servidor.matricula, pessoa.nome FROM pessoa 
                            INNER JOIN (rh_servidor INNER JOIN ((acaojudicial_acaojudicial INNER JOIN acaojudicial_grupoacao 
                            ON acaojudicial_acaojudicial.id = acaojudicial_grupoacao.acao_id) INNER JOIN acaojudicial_grupoacao_servidor 
                            ON acaojudicial_grupoacao.id = acaojudicial_grupoacao_servidor.grupoacao_id) 
                            ON rh_servidor.pessoa_ptr_id = acaojudicial_grupoacao_servidor.servidor_id) ON pessoa.id = rh_servidor.pessoa_ptr_id;"""
    grupo_acao = db.get_dict(strConsulta)
    
    report = RelatorioAcaoJudicialGeralPDF(queryset=grupo_acao)
    report.generate_by(PDFGenerator, filename=response, variables={'titulo': titulo})
    return response

def relatorio_acao(request, titulo, acao_judicial):
    response = HttpResponse(mimetype='application/pdf')
    response['Content-Disposition'] = 'attachment; filename=relatorio_acao.pdf'
    
    strConsulta = """SELECT acaojudicial_acaojudicial.descricao, acaojudicial_grupoacao.descricao, rh_servidor.matricula, pessoa.nome FROM pessoa
                            INNER JOIN (rh_servidor INNER JOIN ((acaojudicial_acaojudicial INNER JOIN acaojudicial_grupoacao 
                            ON acaojudicial_acaojudicial.id = acaojudicial_grupoacao.acao_id) INNER JOIN acaojudicial_grupoacao_servidor 
                            ON acaojudicial_grupoacao.id = acaojudicial_grupoacao_servidor.grupoacao_id) 
                            ON rh_servidor.pessoa_ptr_id = acaojudicial_grupoacao_servidor.servidor_id) 
                            ON pessoa.id = rh_servidor.pessoa_ptr_id 
                        WHERE acaojudicial_acaojudicial.descricao = '%s';""" % (acao_judicial)
    grupo_acao = db.get_dict(strConsulta)
    
    report = RelatorioAcaoJudicialPDF(queryset=grupo_acao)
    report.generate_by(PDFGenerator, filename=response, variables={'titulo': titulo})
    return response

@rtr()
def acao_busca(request):
    form = GrupoAcaoBuscaForm(request.GET or None)
    if form.is_valid():
        descricao = ''
        acao = form.cleaned_data['acao']
        
        detalhes_acoes = GrupoAcao.objects.filter(campo_busca__icontains=descricao)
        if acao:
            detalhes_acoes = detalhes_acoes.filter(acao=acao)
        if request.GET.has_key('pdf'):
            return relatorio(request, detalhes_acoes)
    return locals()

def relatorio(request, inventarios):
    response = HttpResponse(mimetype='application/pdf')
    response['Content-Disposition'] = 'attachment; filename=relatorio.pdf'

    acao = request.GET.get('acao')

    if acao:
        acao = AcaoJudicial.objects.get(pk = acao)
    
    if not acao:
        titulo = 'Relatório Geral dos Servidores de Ações Judiciais'
        return relatorio_geral(request, titulo)
    else:
        titulo = 'Relatório dos Servidores da Ação Judicial %s' % acao
        return relatorio_acao(request, titulo, acao)
    return response